#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int HeapDataType;
typedef struct Heap
{
	HeapDataType *a;
	int size;
	int capacity;
}Heap;

//初始化堆
void HeapInit(Heap* hp);
//堆的销毁
void HeapDestroyed(Heap* hp);
//堆的插入
void HeapPush(Heap* hp, HeapDataType x);
//堆的打印
void HeapPrintf(Heap* hp);
//判断堆是否为空
bool HeapEmpty(Heap* hp);
//交换
void Swap(HeapDataType* x, HeapDataType* y);
//堆的删除
void HeapPop(Heap* hp);
//获取堆顶元素
HeapDataType GetHeapTop(Heap* hp);
//获取堆的元素个数
int HeapSize(Heap* hp);